1. Field of the Invention
Exemplary embodiments of the present invention relate to configuration information for application components, and more particularly, to the updating of configuration data in response to changes in configuration information.
2. Description of Background
With the continuing evolution of network computing, distributed applications utilizing a client/server computing model have become prevalent. An application server is a software engine that can be implemented in a distributed network to deliver applications and resources to connected client computers or devices, typically through the Internet using the HTTP protocol. The term application server applies to all computing platforms including those providing servers for Web-based applications, such as integrated platforms for e-commerce, content management systems, and Web-site builders. An application server handles most, if not all, of the business logic and data access for an application program. A primary benefit provided by application servers is the ease of application development provided by a centralized configuration, as applications need not be programmed; rather, they can be assembled from building blocks provided by the application server, and changes to application configurations, such as a move of a database server, or system settings, can be done centrally.
Nevertheless, applications that execute on a server require reloading and re-initialization when the underlying software code is revised or when the application configuration is revised. In these situations, the server may be in the midst of processing requests on behalf of users for the application to be revised while the application is being reloaded or re-initialized. Thus, it is a challenge to keep the underlying software code or application configuration continuously up-to-date with revisions.
One approach that is used for reconfiguring a server-based application upon an application revision is to stop the server from processing, reload the revised application and reconfigure the server accordingly, and then restart the server in order to implement the changes made to the application and the server. For example, in IBM's WEBSPHERE Application Server platform, for all administrative revisions, the administrator is prompted that the server may need to be restarted for the revisions to take effect. WEBSPHERE provides a configuration listener that developers can implement within software components to listen for configuration changes. Most of the components, however, do not use the listener properly or do not use it at all, leaving stale data in the code.
This approach has numerous shortcomings, one of which is the fact that the server cannot process requests for the revised application, or any other application installed on the server, while it is off-line or in the process of restarting. Requests that are in progress when the server is restarted may be interrupted, which typically leads to request processing errors. Furthermore, any server down-time adversely affects the availability of the server, which in turn may have an impact on, for example, SLAs (Service Level Agreements) associated with the services provided by the server.
Another shortcoming of this approach is that because large servers typically have multiple applications executing, an application maintenance operation requiring server stop/restart each time an application is changed may not be a practical approach for a high-traffic server, partly due to the time it takes to restart a server running multiple applications. Again, while the server is off-line and while being restarted, users may be denied access to the server. A complex server can take on the order of minutes to restart, and a tremendous amount of request traffic can be lost in that time. Furthermore, if an error is discovered in the new application configuration subsequent to the reload, another server stop/restart will be required. Yet another shortcoming to note is that interrupting requests that are in progress by restarting the server may have the effect of compromising the integrity of the data associated with the current user sessions, which can lead to errors when the server resumes its request processing.
Accordingly, it is desirable to provide a listener mechanism that does not need to be implemented by application developers so that developers are able to focus on designing components, fixing bugs, etc.